home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / share / pyshared / apt / cdrom.py < prev    next >
Text File  |  2009-09-25  |  3KB  |  87 lines

  1. # cdrom.py - CDROM handling
  2. #
  3. #  Copyright (c) 2005-2009 Canonical
  4. #  Copyright (c) 2009 Julian Andres Klode <jak@debian.org>
  5. #
  6. #  Author: Michael Vogt <michael.vogt@ubuntu.com>
  7. #
  8. #  This program is free software; you can redistribute it and/or
  9. #  modify it under the terms of the GNU General Public License as
  10. #  published by the Free Software Foundation; either version 2 of the
  11. #  License, or (at your option) any later version.
  12. #
  13. #  This program is distributed in the hope that it will be useful,
  14. #  but WITHOUT ANY WARRANTY; without even the implied warranty of
  15. #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  16. #  GNU General Public License for more details.
  17. #
  18. #  You should have received a copy of the GNU General Public License
  19. #  along with this program; if not, write to the Free Software
  20. #  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
  21. #  USA
  22. """Classes related to cdrom handling."""
  23. import glob
  24.  
  25. import apt_pkg
  26. from apt.progress import CdromProgress
  27.  
  28.  
  29. class Cdrom(object):
  30.     """Support for apt-cdrom like features.
  31.  
  32.     This class has several optional parameters for initialisation, which may
  33.     be used to influence the behaviour of the object:
  34.  
  35.     The optional parameter `progress` is a CdromProgress() subclass, which will
  36.     ask for the correct cdrom, etc. If not specified or None, a CdromProgress()
  37.     object will be used.
  38.  
  39.     The optional parameter `mountpoint` may be used to specify an alternative
  40.     mountpoint.
  41.  
  42.     If the optional parameter `nomount` is True, the cdroms will not be
  43.     mounted. This is the default behaviour.
  44.     """
  45.  
  46.     def __init__(self, progress=None, mountpoint=None, nomount=True):
  47.         self._cdrom = apt_pkg.GetCdrom()
  48.         if progress is None:
  49.             self._progress = CdromProgress()
  50.         else:
  51.             self._progress = progress
  52.         # see if we have a alternative mountpoint
  53.         if mountpoint is not None:
  54.             apt_pkg.Config.Set("Acquire::cdrom::mount", mountpoint)
  55.         # do not mess with mount points by default
  56.         if nomount:
  57.             apt_pkg.Config.Set("APT::CDROM::NoMount", "true")
  58.         else:
  59.             apt_pkg.Config.Set("APT::CDROM::NoMount", "false")
  60.  
  61.     def add(self):
  62.         """Add cdrom to the sources.list."""
  63.         return self._cdrom.Add(self._progress)
  64.  
  65.     def ident(self):
  66.         """Identify the cdrom."""
  67.         (res, ident) = self._cdrom.Ident(self._progress)
  68.         if res:
  69.             return ident
  70.  
  71.     @property
  72.     def inSourcesList(self):
  73.         """Check if the cdrom is already in the current sources.list."""
  74.         cd_id = self.ident()
  75.         if cd_id is None:
  76.             # FIXME: throw exception instead
  77.             return False
  78.         # Get a list of files
  79.         src = glob.glob(apt_pkg.Config.FindDir("Dir::Etc::sourceparts") + '*')
  80.         src.append(apt_pkg.Config.FindFile("Dir::Etc::sourcelist"))
  81.         # Check each file
  82.         for fname in src:
  83.             for line in open(fname):
  84.                 if not line.lstrip().startswith("#") and cd_id in line:
  85.                     return True
  86.         return False
  87.